/*
 * @ClassName main_init.dart
 * @Description main函数初始化
 * @Author SuPeiSen
 * @Date 2020/7/15 14:59
 */

import 'dart:io';

import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_su/common/application.dart';
import 'package:flutter_su/init/router_init.dart';
import 'package:flutter_su/init/sp_init.dart';
import 'package:provider/provider.dart';

import 'loading_init.dart';

class MainInit{
  Future<void> init() async {

    WidgetsFlutterBinding.ensureInitialized(); // 可以在run之前使用特殊的方法
    Provider.debugCheckInvalidValueType = null; // 取消provide错误提示

    // 沉浸式状态栏
    if (Platform.isAndroid) {
    // 以下两行 设置android状态栏为透明的沉浸。写在组件渲染之后，是为了在渲染后进行set赋值，
    // 覆盖状态栏，写在渲染之前MaterialApp组件会覆盖掉这个值。
      SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle(statusBarColor: Colors.transparent);
      SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
    }

    await SpInit().init();

    RouterInit().init(); // 注册路由

    LoadingInit().init(); // Loading样式初始化
  }
}